package com.plate.gateway.security.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

/**
 * @ClassName AccessTokenConfig
 * @Description token令牌的配置
 * @Author jiaxd
 * @Date 2023年10月29日 18:40
 * @Version 1.0
 */

@Configuration
public class AccessTokenConfig {

    private static final String SIGN_KEY = "bababba";

    /**
     * 令牌的存储策略
     * @return
     */
    @Bean
    public TokenStore tokenStore() {
        // 使用JwtTokenStore生成JWT令牌
        return new JwtTokenStore(jwtAccessTokenConverter());
    }

    /**
     * JwtAccessTokenConverter
     * TokenEnhancer的子类，在JWT编码的令牌值和OAuth身份验证信息之间进行转换。
     * TODO：后期可以使用非对称加密
     * @return
     */
    @Bean
    public JwtAccessTokenConverter jwtAccessTokenConverter() {
        JwtAccessTokenConverter tokenConverter = new JwtAccessTokenConverter();
        tokenConverter.setSigningKey(SIGN_KEY);
        return tokenConverter;
    }

}
